package controller

import (
	"GoWeb/001_bubble/models"
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

/*
	  URL  ——> controller ——> logic  ——> model
	请求来了 ——>   控制器   ——> 业务逻辑 ——> 模型层的增删改查
*/

func IndexHandler(context *gin.Context) {
	context.HTML(http.StatusOK, "index.html", nil)
}

func CreateATodo(context *gin.Context) {
	//前端页面填写代办事项 点击提交 会发送请求到这里
	//1.从请求中把数据拿出来
	var todo models.Todo
	context.BindJSON(&todo)
	//2.存入数据库
	err := models.CreateATodo(&todo)
	if err != nil {
		//3.返回响应
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		//3.返回响应
		context.JSON(http.StatusOK, todo)
	}
}

func GetTodoList(context *gin.Context) {
	//查询 todos 这个表里的所有数据
	todoList, err := models.GetTodoList()
	if err != nil {
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		context.JSON(http.StatusOK, todoList)
	}
}

func GetATodo(context *gin.Context) {
	//获取 id 值
	id := context.Param("id")
	//查询 todos 这个表里 id 为指定值的数据
	todo, err := models.GetATodo(id)
	if err != nil {
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		context.JSON(http.StatusOK, todo)
	}
}

func UpdateATodo(context *gin.Context) {
	//获取 id 值
	id := context.Param("id")
	todo, err := models.GetATodo(id)
	if err != nil {
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
		return
	}
	//修改记录
	context.BindJSON(todo)
	err = models.UpdateATodo(todo)
	if err != nil {
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		context.JSON(http.StatusOK, todo)
	}
}

func DeleteATodo(context *gin.Context) {
	//获取 id 值
	id := context.Param("id")
	todo, err := models.GetATodo(id)
	fmt.Println("-------------------------------------")
	fmt.Printf("%#v\n", todo)
	if err != nil {
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
		return
	}
	err = models.DeleteATodo(id)
	if err != nil {
		context.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		context.JSON(http.StatusOK, gin.H{id: "deleted"})
	}
}
